From b98fb074192a54e320d7291fcf4ac34c3d9a4578 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 8 Jul 2016 16:40:42 +0100 Subject: [PATCH] gsk: Enable depth testing Use the appropriate depth testing function for transparent items. --- gsk/gskglrenderer.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/gsk/gskglrenderer.c b/gsk/gskglrenderer.c index 82911074f2..6a787d1174 100644 --- a/gsk/gskglrenderer.c +++ b/gsk/gskglrenderer.c @@ -845,6 +845,13 @@ gsk_gl_renderer_render (GskRenderer *renderer, gsk_gl_renderer_clear (self); glDisable (GL_BLEND); + if (self->has_depth_buffer) + { + glEnable (GL_DEPTH_TEST); + glDepthFunc (GL_LESS); + } + else + glDisable (GL_DEPTH_TEST); /* Opaque pass: front-to-back */ GSK_NOTE (OPENGL, g_print ("Rendering %u opaque items\n", self->opaque_render_items->len)); @@ -855,6 +862,12 @@ gsk_gl_renderer_render (GskRenderer *renderer, render_item (self, item); } + if (self->has_depth_buffer) + { + glEnable (GL_DEPTH_TEST); + glDepthFunc (GL_LEQUAL); + } + glEnable (GL_BLEND); glBlendFuncSeparate (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE); glBlendEquation (GL_FUNC_ADD); -- 2.30.2